/**
 * Ant Design 配置
 * 解决兼容性警告和自定义主题
 */

// 主题配置
export const antdTheme = {
    token: {
        // 主色调
        colorPrimary: '#1890ff',
        colorSuccess: '#52c41a',
        colorWarning: '#faad14',
        colorError: '#ff4d4f',
        colorInfo: '#1890ff',

        // 字体
        fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',
        fontSize: 14,

        // 圆角
        borderRadius: 6,

        // 间距
        padding: 16,
        margin: 16,
    },
    components: {
        // 按钮组件自定义
        Button: {
            borderRadius: 6,
            controlHeight: 32,
        },
        // 卡片组件自定义
        Card: {
            borderRadius: 8,
        },
        // 输入框组件自定义
        Input: {
            borderRadius: 6,
            controlHeightSM: 24,
            controlHeight: 32,
            controlHeightLG: 40,
        },
        // 选择器组件自定义
        Select: {
            borderRadius: 6,
            controlHeightSM: 24,
            controlHeight: 32,
            controlHeightLG: 40,
        },
    },
}

// 全局配置
export const antdConfig = {
    // 中文本地化
    locale: 'zh_CN',

    // 禁用兼容性警告
    warning: {
        strict: false,
    },

    // 主题配置
    theme: antdTheme,

    // 全局属性
    componentSize: 'middle',

    // 表单配置
    form: {
        validateMessages: {
            required: '${label}是必填项',
            types: {
                email: '${label}格式不正确',
                number: '${label}必须是数字',
            },
            number: {
                range: '${label}必须在${min}-${max}之间',
            },
        },
    },
}

// 抑制特定警告的配置
export const suppressWarnings = () => {
    // 抑制 React 版本兼容性警告
    if (typeof window !== 'undefined') {
        const originalWarn = console.warn
        console.warn = (...args) => {
            // 过滤掉 Ant Design 兼容性警告
            if (args[0] && typeof args[0] === 'string') {
                if (args[0].includes('antd v5 support React is 16 ~ 18')) {
                    return // 忽略这个警告
                }
                if (args[0].includes('compatible')) {
                    return // 忽略兼容性相关警告
                }
            }
            originalWarn.apply(console, args)
        }
    }
}